﻿
using Kendo.Mvc.Extensions;
using Kendo.Mvc.UI;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using TalentDesk.Mvc.Controllers;


namespace TalentMvcApp.Controllers
{
    public class UserManagerController : BaseController
    {
    //    #region User

    //    public ActionResult UserList()
    //    {
    //        try
    //        {
    //            IUser objUser = Wcf.Proxy<IUser>();
    //            List<Users> lUser = objUser.GetUsers();
    //            return View(lUser);
    //        }
    //        catch (Exception ex)
    //        {
    //            MessageBox(ex.Message.ToString(), EnumMessageType.WarningMessage);
    //        }

    //        return Redirect(Request.UrlReferrer.ToString());
    //    }

    //    public ActionResult AddUser()
    //    {
    //        return View();
    //    }

    //    [AcceptVerbs(HttpVerbs.Post)]
    //    public ActionResult AddUser(AddUserModel model)
    //    {
    //        try
    //        {
    //            IUser objUser = Wcf.Proxy<IUser>();
    //            Users oUser = new Users();
    //            var mapper = ObjectMapperManager.DefaultInstance.GetMapper<AddUserModel, Users>();
    //            mapper.Map(model, oUser);
    //            oUser.IsActive = true;
    //            oUser.CreateTime = DateTime.Now;
    //            oUser.CreateUserId = ActiveUser.UserId;
    //            objUser.SaveUser(oUser);
    //            MessageBox("User was saved.");
    //            return RedirectToAction("UserList", "UserManager");
    //        }
    //        catch (Exception ex)
    //        {
    //            MessageBox(ex.Message.ToString(), EnumMessageType.WarningMessage);
    //        }
    //        return View(model);
    //    }

    //    public ActionResult EditUser(string userId)
    //    {
    //        try
    //        {
    //            IUser objUser = Wcf.Proxy<IUser>();
    //            Users oUser = objUser.GetUser(Convert.ToInt32(userId));
    //            AddUserModel oAddUserModel = new AddUserModel();
    //            var mapper = ObjectMapperManager.DefaultInstance.GetMapper<Users, AddUserModel>();
    //            mapper.Map(oUser, oAddUserModel);
    //            return View(oAddUserModel);
    //        }
    //        catch (Exception ex)
    //        {
    //            MessageBox(ex.Message.ToString(), EnumMessageType.WarningMessage);
    //        }

    //        return Redirect(Request.UrlReferrer.ToString());
    //    }

    //    [AcceptVerbs(HttpVerbs.Post)]
    //    public ActionResult EditUser(AddUserModel model)
    //    {
    //        try
    //        {
    //            IUser objUser = Wcf.Proxy<IUser>();
    //            Users oUser = new Users();
    //            var mapper = ObjectMapperManager.DefaultInstance.GetMapper<AddUserModel, Users>();
    //            oUser = objUser.GetUser(model.UserId);
    //            mapper.Map(model, oUser);
    //            oUser.UpdateTime = DateTime.Now;
    //            oUser.UpdateUserId = ActiveUser.UserId;
    //            objUser.UpdateUser(oUser);
    //            MessageBox("User was update.");
    //            return RedirectToAction("UserList", "UserManager");
    //        }
    //        catch (Exception ex)
    //        {
    //            MessageBox(ex.Message.ToString(), EnumMessageType.WarningMessage);
    //        }
    //        return View(model);
    //    }

    //    public ActionResult AddRoleToUser(string userId)
    //    {
    //        try
    //        {

    //            AddRoleToUserModel oAddRoleToUserModel = new AddRoleToUserModel();
    //            IUser objUser = Wcf.Proxy<IUser>();
    //            IAuthority objAuthority = Wcf.Proxy<IAuthority>();
    //            Users oUser = objUser.GetUser(Convert.ToInt32(userId), true);
    //            List<Roles> lRole = objAuthority.GetRoles();
    //            List<Roles> lUserRole = new List<Roles>();
    //            foreach (var item in oUser.UserRoles)
    //            {
    //                if (!lUserRole.Contains(item.Roles))
    //                {
    //                    lUserRole.Add(item.Roles);
    //                }
    //            }

    //            oAddRoleToUserModel.lRole = new List<RoleModel>();
    //            foreach (var item in lRole)
    //            {

    //                RoleModel oUserRoleModel = new RoleModel();
    //                oUserRoleModel.Name = item.Role;
    //                oUserRoleModel.ID = item.RoleId;

    //                foreach (var item1 in lUserRole)
    //                {
    //                    if (item1.RoleId == item.RoleId)
    //                    {
    //                        oUserRoleModel.IsSelected = true; break;
    //                    }

    //                }
    //                oAddRoleToUserModel.lRole.Add(oUserRoleModel);
    //            }

    //            oAddRoleToUserModel.userId = oUser.UserId;
    //            return View(oAddRoleToUserModel);
    //        }
    //        catch (Exception ex)
    //        {
    //            MessageBox(ex.Message.ToString(), EnumMessageType.WarningMessage);
    //        }

    //        return Redirect(Request.UrlReferrer.ToString());


    //    }

    //    [AcceptVerbs(HttpVerbs.Post)]
    //    public ActionResult AddRoleToUser(AddRoleToUserModel model)
    //    {
    //        try
    //        {
    //            List<int> lDeleteRoleId = new List<int>();
    //            List<int> lAddRoleId = new List<int>();
    //            IUser objUser = Wcf.Proxy<IUser>();
    //            Users oUser = objUser.GetUser(Convert.ToInt32(model.userId), true);
    //            foreach (var item in model.lRole)
    //            {
    //                if (oUser.UserRoles.Where(p => p.RoleId == item.ID && item.IsSelected == false).Count() > 0)
    //                    lDeleteRoleId.Add(item.ID);
    //                else
    //                {
    //                    UserRoles userRole = oUser.UserRoles.Where(p => p.RoleId == item.ID).FirstOrDefault();
    //                    if (userRole == null)
    //                    {
    //                        lAddRoleId.Add(item.ID);
    //                    }

    //                }
    //            }
    //            objUser.AddDeleteUserRole(lDeleteRoleId, lAddRoleId, model.userId, ActiveUser.UserId);
    //            MessageBox("User's roles were saved.");
    //            return RedirectToAction("UserList", "UserManager");
    //        }
    //        catch (Exception ex)
    //        {
    //            MessageBox(ex.Message.ToString(), EnumMessageType.ErrorMessage);
    //        }

    //        return View(model);
    //    }

    //    public static List<TalentDesk.Interface.Models.Users> GetUser()
    //    {
    //        try
    //        {
    //            IUser objUser = Wcf.Proxy<IUser>();
    //            List<TalentDesk.Interface.Models.Users> lUser = objUser.GetUsers();


    //            return lUser;
    //        }
    //        catch (Exception ex)
    //        {
    //            throw;
    //        }


    //    }

    //    #endregion

    //    #region Controller
    //    public ActionResult ControllerList()
    //    {
    //        try
    //        {
    //            IAuthority objAuthority = Wcf.Proxy<IAuthority>();
    //            List<TalentDesk.Interface.Models.Controllers> lControllers = objAuthority.GetControllers();
    //            return View(lControllers);
    //        }
    //        catch (Exception ex)
    //        {
    //            MessageBox(ex.Message.ToString(), EnumMessageType.ErrorMessage);
    //        }

    //        return Redirect(Request.UrlReferrer.ToString());
    //    }

    //    public JsonResult GetController()
    //    {
    //        try
    //        {
    //            IAuthority objAuthority = Wcf.Proxy<IAuthority>();
    //            List<TalentDesk.Interface.Models.Controllers> lControllers = objAuthority.GetControllers();
    //            return Json(lControllers, JsonRequestBehavior.AllowGet);
    //        }
    //        catch (Exception ex)
    //        {
    //            MessageBox(ex.Message.ToString(), EnumMessageType.ErrorMessage);
    //        }

    //        return Json(null);
    //    }

    //    public ActionResult AddController()
    //    {
    //        return View();
    //    }

    //    [AcceptVerbs(HttpVerbs.Post)]
    //    public ActionResult AddController(ControllerModel model)
    //    {
    //        try
    //        {
    //            IAuthority objAuthority = Wcf.Proxy<IAuthority>();
    //            TalentDesk.Interface.Models.Controllers oController = new TalentDesk.Interface.Models.Controllers();
    //            var mapper = ObjectMapperManager.DefaultInstance.GetMapper<ControllerModel, TalentDesk.Interface.Models.Controllers>();
    //            mapper.Map(model, oController);

    //            oController.CreateTime = DateTime.Now;
    //            oController.CreateUserId = ActiveUser.UserId;
    //            objAuthority.SaveController(oController);
    //            MessageBox(String.Format("{0} controller was saved.", oController.ControllerName));
    //            return RedirectToAction("ControllerList", "UserManager");
    //        }
    //        catch (Exception ex)
    //        {
    //            MessageBox(ex.Message.ToString(), EnumMessageType.WarningMessage);
    //        }
    //        return View(model);
    //    }

    //    public ActionResult EditController(string controllerId)
    //    {
    //        try
    //        {
    //            IAuthority objAuthority = Wcf.Proxy<IAuthority>();
    //            TalentDesk.Interface.Models.Controllers oController = objAuthority.GetControllerByControllerId(Convert.ToInt32(controllerId));
    //            ControllerModel oControllerModel = new ControllerModel();
    //            var mapper = ObjectMapperManager.DefaultInstance.GetMapper<TalentDesk.Interface.Models.Controllers, ControllerModel>();
    //            mapper.Map(oController, oControllerModel);
    //            return View(oControllerModel);
    //        }
    //        catch (Exception ex)
    //        {
    //            MessageBox(ex.Message.ToString(), EnumMessageType.WarningMessage);
    //        }

    //        return Redirect(Request.UrlReferrer.ToString());
    //    }

    //    [AcceptVerbs(HttpVerbs.Post)]
    //    public ActionResult EditController(ControllerModel model)
    //    {
    //        try
    //        {
    //            IAuthority objAuthority = Wcf.Proxy<IAuthority>();
    //            TalentDesk.Interface.Models.Controllers oController = new TalentDesk.Interface.Models.Controllers();
    //            var mapper = ObjectMapperManager.DefaultInstance.GetMapper<ControllerModel, TalentDesk.Interface.Models.Controllers>();
    //            oController = objAuthority.GetControllerByControllerId(model.ControllerId);
    //            mapper.Map(model, oController);

    //            oController.UpdateTime = DateTime.Now;
    //            oController.UpdateUserId = ActiveUser.UserId;
    //            objAuthority.UpdateController(oController);
    //            MessageBox(String.Format("{0} controller was update.", oController.ControllerName));
    //            return RedirectToAction("ControllerList", "UserManager");
    //        }
    //        catch (Exception ex)
    //        {
    //            MessageBox(ex.Message.ToString(), EnumMessageType.WarningMessage);
    //        }
    //        return View(model);
    //    }
    //    #endregion

    //    #region Action
    //    public ActionResult ActionList()
    //    {
    //        try
    //        {
    //            IAuthority objAuthority = Wcf.Proxy<IAuthority>();
    //            List<TalentDesk.Interface.Models.Actions> lActions = objAuthority.GetActions();
    //            return View("ActionList", lActions);
    //        }
    //        catch (Exception ex)
    //        {
    //            MessageBox(ex.Message.ToString(), EnumMessageType.ErrorMessage);
    //        }

    //        return Redirect(Request.UrlReferrer.ToString());
    //    }


    //    public ActionResult ActionListByControllerId(string controllerId)
    //    {
    //        try
    //        {
    //            IAuthority objAuthority = Wcf.Proxy<IAuthority>();
    //            List<TalentDesk.Interface.Models.Actions> lActions = objAuthority.GetActionsByControllerId(Convert.ToInt32(controllerId));
    //            ViewData["ControllerId"] = controllerId;
    //            return View("ActionList", lActions);
    //        }
    //        catch (Exception ex)
    //        {
    //            MessageBox(ex.Message.ToString(), EnumMessageType.ErrorMessage);
    //        }

    //        return Redirect(Request.UrlReferrer.ToString());
    //    }


    //    public ActionResult AddAction()
    //    {
    //        return View();
    //    }


    //    public ActionResult AddActionByControllerId(string controllerId)
    //    {
    //        ActionModel model = new ActionModel();
    //        model.ControllerId = Convert.ToInt32(controllerId);
    //        model.ParentControllerId = model.ControllerId;
    //        return View("AddAction", model);
    //    }

    //    [AcceptVerbs(HttpVerbs.Post)]
    //    public ActionResult AddAction(ActionModel model)
    //    {
    //        try
    //        {
    //            IAuthority objAuthority = Wcf.Proxy<IAuthority>();
    //            TalentDesk.Interface.Models.Actions oAction = new TalentDesk.Interface.Models.Actions();
    //            var mapper = ObjectMapperManager.DefaultInstance.GetMapper<ActionModel, TalentDesk.Interface.Models.Actions>();
    //            mapper.Map(model, oAction);
    //            oAction.ControlName = objAuthority.GetControllerByControllerId(oAction.ControllerId).ControllerName;
    //            oAction.CreateTime = DateTime.Now;
    //            oAction.CreateUserId = ActiveUser.UserId;
    //            objAuthority.SaveAction(oAction);
    //            MessageBox(String.Format("{0} Action was saved.", oAction.ActionName));
    //            if (model.ParentControllerId == null)
    //            {
    //                return RedirectToAction("ActionList", "UserManager");
    //            }
    //            else
    //                return RedirectToAction("ActionListByControllerId", "UserManager", new { controllerId = model.ParentControllerId.ToString() });

    //        }
    //        catch (Exception ex)
    //        {
    //            MessageBox(ex.Message.ToString(), EnumMessageType.WarningMessage);
    //        }
    //        return View(model);
    //    }

    //    public ActionResult EditAction(string ActionId)
    //    {
    //        try
    //        {
    //            IAuthority objAuthority = Wcf.Proxy<IAuthority>();
    //            TalentDesk.Interface.Models.Actions oAction = objAuthority.GetActionByActionId(Convert.ToInt32(ActionId));
    //            ActionModel oActionModel = new ActionModel();
    //            var mapper = ObjectMapperManager.DefaultInstance.GetMapper<TalentDesk.Interface.Models.Actions, ActionModel>();
    //            mapper.Map(oAction, oActionModel);
    //            return View(oActionModel);
    //        }
    //        catch (Exception ex)
    //        {
    //            MessageBox(ex.Message.ToString(), EnumMessageType.WarningMessage);
    //        }

    //        return Redirect(Request.UrlReferrer.ToString());
    //    }

    //    [AcceptVerbs(HttpVerbs.Post)]
    //    public ActionResult EditAction(ActionModel model)
    //    {
    //        try
    //        {
    //            IAuthority objAuthority = Wcf.Proxy<IAuthority>();
    //            TalentDesk.Interface.Models.Actions oAction = new TalentDesk.Interface.Models.Actions();
    //            var mapper = ObjectMapperManager.DefaultInstance.GetMapper<ActionModel, TalentDesk.Interface.Models.Actions>();
    //            oAction = objAuthority.GetActionByActionId(model.ActionId);
    //            mapper.Map(model, oAction);
    //            oAction.ControlName = objAuthority.GetControllerByControllerId(model.ControllerId).ControllerName;
    //            oAction.UpdateTime = DateTime.Now;
    //            oAction.UpdateUserId = ActiveUser.UserId;
    //            objAuthority.UpdateAction(oAction);
    //            MessageBox(String.Format("{0} Action was update.", oAction.ActionName));
    //            return RedirectToAction("ActionList", "UserManager");
    //        }
    //        catch (Exception ex)
    //        {
    //            MessageBox(ex.Message.ToString(), EnumMessageType.WarningMessage);
    //        }
    //        return View(model);
    //    }

    //    public JsonResult GetAction()
    //    {
    //        try
    //        {
    //            IAuthority objAuthority = Wcf.Proxy<IAuthority>();
    //            List<TalentDesk.Interface.Models.Actions> lActions = objAuthority.GetActions();
    //            return Json(lActions, JsonRequestBehavior.AllowGet);
    //        }
    //        catch (Exception ex)
    //        {
    //            MessageBox(ex.Message.ToString(), EnumMessageType.ErrorMessage);
    //        }

    //        return Json(null);
    //    }
    //    #endregion

    //    #region Menu
    //    public ActionResult MenuList()
    //    {
    //        List<Menus> lMenu = new List<Menus>();
    //        List<MenuModel> lMenuModel = new List<MenuModel>();
    //        IAuthority objAuthority = Wcf.Proxy<IAuthority>();
    //        lMenu = objAuthority.GetMenus().OrderBy(p => p.ParentMenuId).OrderBy(p => p.PageRank).ToList<Menus>();

    //        foreach (var item in lMenu)
    //        {
    //            MenuModel oMenuModel = new MenuModel();
    //            var mapper = EmitMapper.ObjectMapperManager.DefaultInstance.GetMapper<Menus, MenuModel>();
    //            mapper.Map(item, oMenuModel);
    //            if (oMenuModel.ParentMenuId != null)
    //            {
    //                oMenuModel.ParentMenuName = lMenu.Where(p => p.MenuId == oMenuModel.ParentMenuId).FirstOrDefault().MenuName;
    //            }

    //            if (oMenuModel.ActionId != null)
    //            {
    //                oMenuModel.ControllerName = item.Actions.ControlName;
    //                oMenuModel.ControllerId = item.Actions.ControllerId;
    //                oMenuModel.ActionName = item.Actions.ActionName;
    //            }

    //            lMenuModel.Add(oMenuModel);
    //        }

    //        return View(lMenuModel);
    //    }

    //    public JsonResult GetMenu()
    //    {
    //        try
    //        {
    //            IAuthority objAuthority = Wcf.Proxy<IAuthority>();
    //            List<TalentDesk.Interface.Models.Menus> lMenus = objAuthority.GetMenus();
    //            List<MenuModel> lMenuModel = new List<MenuModel>();
    //            foreach (var item in lMenus)
    //            {
    //                var mapper = EmitMapper.ObjectMapperManager.DefaultInstance.GetMapper<Menus, MenuModel>();
    //                MenuModel oMenuModel = new MenuModel();
    //                mapper.Map(item, oMenuModel);
    //                lMenuModel.Add(oMenuModel);
    //            }

    //            return Json(lMenuModel, JsonRequestBehavior.AllowGet);
    //        }
    //        catch (Exception ex)
    //        {
    //            MessageBox(ex.Message.ToString(), EnumMessageType.ErrorMessage);
    //        }

    //        return Json(null);
    //    }

    //    public ActionResult AddMenu()
    //    {
    //        return View();
    //    }

    //    [AcceptVerbs(HttpVerbs.Post)]
    //    public ActionResult AddMenu(Menus model)
    //    {
    //        try
    //        {
    //            IAuthority objAuthority = Wcf.Proxy<IAuthority>();



    //            model.CreateTime = DateTime.Now;
    //            model.CreateUserId = ActiveUser.UserId;
    //            objAuthority.SaveMenu(model);
    //            MessageBox(String.Format("{0} Menu was saved.", model.MenuName));

    //            return RedirectToAction("MenuList", "UserManager");

    //        }
    //        catch (Exception ex)
    //        {
    //            MessageBox(ex.Message.ToString(), EnumMessageType.WarningMessage);
    //        }
    //        return View(model);
    //    }
    //    public ActionResult EditMenu(string menuId)
    //    {
    //        try
    //        {
    //            IAuthority objAuthority = Wcf.Proxy<IAuthority>();
    //            TalentDesk.Interface.Models.Menus oMenu = objAuthority.GetMenusByMenuId(Convert.ToInt32(menuId));

    //            return View(oMenu);
    //        }
    //        catch (Exception ex)
    //        {
    //            MessageBox(ex.Message.ToString(), EnumMessageType.WarningMessage);
    //        }

    //        return Redirect(Request.UrlReferrer.ToString());
    //    }
    //    [AcceptVerbs(HttpVerbs.Post)]
    //    public ActionResult EditMenu(Menus model)
    //    {
    //        try
    //        {
    //            IAuthority objAuthority = Wcf.Proxy<IAuthority>();
    //            Menus oMenu = objAuthority.GetMenusByMenuId(model.MenuId);
    //            oMenu.ActionId = model.ActionId;
    //            oMenu.IsActive = model.IsActive;
    //            oMenu.MenuName = model.MenuName;
    //            oMenu.PageRank = model.PageRank;
    //            oMenu.ParentMenuId = model.ParentMenuId;
    //            oMenu.UpdateTime = DateTime.Now;
    //            oMenu.UpdateUserId = ActiveUser.UserId;
    //            objAuthority.UpdateMenu(oMenu);
    //            MessageBox(String.Format("{0} Menu was update.", model.MenuName));
    //            return RedirectToAction("MenuList", "UserManager");
    //        }
    //        catch (Exception ex)
    //        {
    //            MessageBox(ex.Message.ToString(), EnumMessageType.WarningMessage);
    //        }
    //        return View(model);
    //    }
    //    #endregion




    }
}
